A graphical user interface (GUI) is a type of user interface that allows users to interact with electronic devices through visual indicators displayed on one or more electronic visual displays. The actions in a GUI are usually performed through direct manipulation of the graphical objects (or elements) by the user. A GUI is often comprised of GUI widgets (also referred to as visual widgets or widgets). Some GUI widgets support interactions with the user (e.g., labels, buttons, and check boxes) through manipulation of the GUI widgets, while others act as containers that group GUI widgets added to them (e.g., panels, windows, and tabs) and/or include other content for presentation.
A widget toolkit (also referred to as a widget library or GUI toolkit) is a set of GUI widgets for use in designing applications with GUIs. A widget toolkit itself is a piece of software which is usually built on top of an operating system, windowing system, or window manager and provides programs with an application programming interface (API), allowing them to make use of the GUI widgets. Widget toolkits can be either native or cross platform.
A windowing system (or window system) is a type of GUI which implements the WIMP (windows, icons, menus, pointer) paradigm (wherein the pointer is also referred to as the cursor). Often, each currently running application is assigned a usually resizable and usually rectangular shaped area to present its graphical user interface to the user. Usually a window decoration is drawn around each window. A windows manager is system software that controls the placement and appearance of windows within a windowing system; this software works in conjunction with the underlying graphical system that provides required functionality—support for graphics hardware, pointing devices, and a keyboard, and are often written and created using a widget toolkit (windows themselves are often considered widgets). Thus, the programming of both, the window decoration and of available GUI widgets inside of the window is eased and simplified through the use of widget toolkits.
Some other types of GUIs have icons, and perhaps menus, but may do not use a pointer and/or run programs in windows (or in windows without window decorations)—these are sometimes referred to as post-WIMP user interfaces (e.g., touch-screen-based operating systems such as iOS manufactured by Apple® of Cupertino, Calif. and Android manufactured by Google® of Mountain View, Calif.). Such GUIs, rather than using windows, often use the display area of the electronic visual display available for applications to show the output of a single, currently selected application. These GUIs also often support styles of interaction using more than one finger in contact with a display, which allows actions such as pinching and rotating. Still other GUIs support both WIMP and post-WIMP simultaneously, and may use the display area of the electronic visual display available for applications to show the output of multiple, currently selected applications using a form of screen splitting (e.g., Windows® 8.1 from Microsoft® Corporation of Redmond Wash.).
Many GUIs are implemented with software relying on a model-view-controller (MVC) architecture, which divides the software into three interconnected parts, so as to separate internal representations of information from the ways that information is presented to or accepted from the user. A first part, the model, consists of application data, business rules, logic, and functions. A view can be any output representation of information, such as a chart or a diagram. Multiple views of the same information are possible. The third part, the controller, accepts input and converts it to commands for the model or view. A model-view-controller allows for a flexible structure in which the GUI is independent from and indirectly linked to application functionality, so the GUI can be easily customized. This allows the user to select or design a different skin at will, and eases the designer's work to change the interface as the user needs evolve.
Regardless of the type of GUI, a given space at a location within the display area of the electronic visual display (which may be all of the display area) may be allocated to a GUI widget; and where that given space is too small, the entire GUI widget and/or the entire content of the GUI widget will not be visible at one time (typically, the user scrolls in order to change which parts of the GUI widget and/or its contents are currently visible). As previously described, one or more GUI widgets (referred to as “internal” GUI widgets) may be placed inside another GUI widget (referred to as a “container” GUI widget). Where one or more GUI widgets are put inside another GUI widget, the one or more “internal” GUI widgets are each provided a space at a location within that “container” GUI widget; and while at least some part of an internal GUI widget is visible, the space at the location provided that internal GUI widget corresponds to a space at a location within the display area of the electronic visual display. Thus, the visible part (which may be all) of a given internal GUI widget is visible at a space at a location within the display area of the electronic visual display.
A popup is a type of GUI widget that covers part of what was being displayed immediately prior to the popup GUI widget being displayed (e.g., a pop-up window, which typically has a window decoration; a pop-up menu). Popup GUI widgets are intended to be sufficiently disruptive to draw the user's attention to the popup GUI widget.
A dialog box (or dialogue box) is a type of GUI widget used to communicate information to the user, prompt the user for a response, or both. Dialog boxes are classified as “modal” or “modeless”, depending on whether or not they block interaction with the software that initiated the dialog.
A checkbox (also referred to as a check box, tickbox, or tick box) is a type of GUI widget that permits the user to make a binary choice (i.e. a choice between one of two possible mutually exclusive options). Checkboxes are often shown on the display area as a square box next to an item (the term “item” here referring to both text adjacent the check box describing or identifying the item, as well as the underlying item itself), and the square box can contain: 1) white space for false; or 2) a mark (e.g., a tick mark or x) for true. Inverting or toggling the state of a checkbox is done responsive to user input (e.g., by clicking the mouse on the box and/or item, using a keyboard shortcut). A checkbox list is a type of GUI widget that offers a series of checkboxes, each with a binary choice between two options, to allow the user to select one or more of the choices (that is, to select one or more of the items). While the checkboxes of a checkbox list are one form of visual indication of which items are currently selected, other types of such visual indications have been used (e.g., instead of the checkboxes, highlighting those items that are currently selected; not displaying any boxes, but still using white space and a mark to next to each (often to the left) item to visually indicate which items are currently selected).